SERP - Serial EEPROM Programmer for 24CXX/93CXX для Linux и Windows 2000/XP.



Программатор SERP(СЕРП) предназначен для программирования микросхем памяти серий 24CXX и 93CXX, т.е. с шинами i2c и microwire. Целью создания этого программатора послужила периодическая необходимость в программировании только этих типов микросхем памяти, которые встречаются, чуть ли не во всех бытовых радиоустройствах, автомобильной электронике, в сетевом оборудовании и т.д. Программатор был разработан таким образом, что бы его мог собрать любой начинающий радиолюбитель, т.к. он практически не содержит радиодеталей, и относится к разряду "low cost" устройств "наколенного" типа. Подключается такой программатор к параллельному порту компьютера. К тому же, его можно собрать не полностью, а под конкретную серию микросхем памяти, что еще более упрощает его сборку. Что бы добиться такой простоты и работоспособности программатора СЕРП, соответственным образом был написан необходимый для него софт, который предназначен для работы в консольном режиме. Исходники СЕРПа вы можете загрузить к себе по адресу http://mcmcc.bat.ru/serp/serp-0.3_full.tar.bz2, там же вы можете взять готовую сборку для Windows 2000/XP в zip файле, которая была собрана с помощью Cygwin'а(mingw32) для нативного использования в среде Windows, т.е. не требует каких либо дополнительных dll, кроме драйвера доступа к портам porttalk.sys от http://www.beyondlogic.org. Мне удалось опробовать работоспособность СЕРПа в двух ОС, Linux FC3 и WindowsXP SP1, для других ОС не было такой возможности.

26.10.2006 NEW!!!
Новая версия SERP v.0.3
- Добавлена поддержка FreeBSD.
- Улучшена поддержка и работа в Windows 2000/XP.
- Добавлены варианты сборки с использованием драйвера Ioperm и Inpout32 для Windows 2000/XP.
- Возможность сборки с помощью Open Watcom C/C++ для Linux.

ПОДДЕРЖИВАЕМЫЕ ТИПЫ EEPROM:
i2c: 24C01,24C02,24C04,24C08,24C16,24C32,24C64,24C128,24C256.
microwire: 93C06,93C46,93C56,93C66,93C76,93C86,93C96.
ПРИМЕЧАНИЕ: На программаторе были проверены не все типы микросхем, если возникнут проблемы и будут исправления, то присылайте все свои замечания на адрес mcmcc@mail.ru. Так же не стоит забывать, что не все микросхемы серии 93CXX работают в двух режимах организации память на 8бит и 16бит, более точную информацию вы можете получить из справочников по этим микросхемам или даташитам. Есть неплохая справочная таблица по EEPROM 24CXX/93CXX на http://www.romservice.ru.

СХЕМА:
Схема программатора находится в графическом файле - scheme.png.

Как видно из схемы, для сборки СЕРПа вам понадобятся следущие детали:
- Разъем DB-25 "папа".
- Две цанговых панельки DIP8, но можно и одну на DIP16, только главное запомните,      
  что куда вставлять.
- Один любой кремневый диод, например КД522А и любой электролитический конденсатор, 
  можно и керамический, но не ниже 0,1 Мкф.
- Если у вас есть желание контролировать процесс подачи напряжения питания на   
  микросхемы, то вы можете дополнить программатор индикацией, для этого вам  
  понадобятся светодиод из серии АЛ307А или подобного типа с подходящими размерами, 
  а так же резистор с номиналом в пределах от 510 Ом до 1.5 Ком, однако, это не 
  обязательная часть программатора и ее можно не собирать.
УСТАНОВКА ПРОГРАМНОГО ОБЕСПЕЧЕНИЯ:

ОБЩЕЕ:
Как уже говорилось выше, что данный программатор подключается к параллельному порту компьютера, но для правильной его работы, вам необходимо выставить режим порта в BIOS'е как стандартный, обычно эта опция называется - "SPP", и крайне редко "Normal". Все это необходимо для работы i2c шины, т.е. для программирования микросхем серии 24CXX, если вам нужна работа только microwire EEPROM 93CXX, то в BIOS'е можно ничего не менять.
ПРИМЕЧАНИЕ: Параллельный порт(порт принтера) самая не защищенная часть в ПК, поэтому следуют помнить, что любые неправильные действия по отношении к нему, могут привести к выходу его из строя, т.е. его можно очень легко спалить. После сборки устройства, нужно очень тщательно проверить все соединения по нескольку раз и не в коем случае не допустить коротких замыканий между контактами панелек, если они не предусмотрены схемой, а так же контактов на самом разъеме DB-25. Смену микросхем в панельках рекомендуется производить после запуска программы программатора.

Windows 2000/XP/2003:
В DOSе и Windows'95/98/Me к параллельному порту можно было обращаться на прямую из программы, для этого не требовалось каких либо драйверов или еще что то, однако в Windows NT/2000/XP/2003 напрямую к порту обращаться нельзя из-за защищенного режима, для этого требуется установка специальных драйверов. При написании программы был выбран драйвер и API PortTalk'а - http://www.beyondlogic.org, на этом сайте вы можете найти его описание, исходники и полную документацию. Установка драйвера очень проста, для этого вам необходимо иметь права администратора и просто скопировать драйвер porttalk.sys в директорию WINDOWS(WINNT)\system32\drivers. Все остальные действия работы с этим драйвером возьмет на себя программа - serp.exe. Сразу после ее запуска появится приглашение:
serp>
Для получения справки можно ввести "?" или "h" или "H":
serp> ?
Commands:
        q               Exit from programm
        ?               This usage message
        i               Select i2c EEPROM mode for 24CXX
        m               Select microwire EEPROM mode for 93CXX
Допустим, что нам надо запрограммировать микросхему 93C56 с организацией памяти 8 
бит:
serp> m
93C46 16bit> ?
Commands:
        q               Quit
        c               Full erase EEPROM
        ?               This usage message
        d               Dump EEPROM, as hex
        D <start> <len> Dump EEPROM, as hex
        e <addr> <val>  Edit EEPROM, write value to address
        f <value>       Erase EEPROM, filling with value
        r               Dump EEPROM into raw binary file
        w               Program EEPROM from raw binary file
        t <type>        Set EEPROM device type (as 93C), default 46
        b <bit>         Set bit organization 8 or 16, default 16
В начале выберем нужный нам тип микросхемы:
93C46 16bit> t 56
93C56 16bit>
Установим режим 8 бит:
93C56 16bit> b 8
93C56 8bit>
Теперь необходимо считать данные из файла для прошивки и загрузить их в микросхему:
93C56 8bit> w
появится стандартное окно для выбора загружаемых файлов, выберем нужный нам файл
и нажмем "OK"
programmed 256 bytes
verify EEPROM...OK!
93C56 8bit>
Можно просмотреть листинг кода в микросхеме
93C56 8bit> d
0x0000: FF FF FF FF FF FF FF FF 01 FF FF FF FF FF FF FF     ................
0x0010: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF     ................
0x0020: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF     ................
0x0030: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF     ................
0x0040: FF FF FF FF FF FF FF 01 FF FF FF FF FF FF FF FF     ................
0x0050: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF     ................
0x0060: FF FF FF FF 01 FF FF 01 FF FF FF FF FF FF FF FF     ................
0x0070: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF     ................
0x0080: FF FF FF FF FF FF 01 FF FF FF FF FF FF FF FF FF     ................
0x0090: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF     ................
0x00A0: FF FF FF FF FF FF FF 01 FF FF FF FF FF FF FF FF     ................
0x00B0: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF     ................
0x00C0: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF     ................
0x00D0: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF     ................
0x00E0: FF FF FF FF FF FF FF FF 01 FF FF FF FF FF FF FF     ................
0x00F0: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF     ................
93C56 8bit>
Если нам нужно считать данные из микросхемы в файл, то надо дать команду r, появится окно для сохранения файлов, введем имя и нажмем "OK". Все создаваемые файлы для чтения и записи имеют расширение BIN. Для 16-ти битного режима, все будет выглядеть аналогично, как и для 8-ми битного, делалось это для простоты редактирования и привычного чтения. Далее заострять внимание на работу с программой не имеет смысла, т.к. все можно понять из справки, которая выдается по команде "?" или "h" или "H".

Linux:
В начале соберем программу из исходников:
make
Далее необходимо получить доступ к параллельному порту, если вы будете использовать программу от root'а, то можете сразу подключить программатор к ПК и запустить программу, если нет, то вам понадобится настроить sudo, включить туда программу serp и тем самым разрешить доступ пользователю к порту. Все работает аналогично, как в примере, описанном выше, однако, с командами r и w нужно указывать имена файлов:
93C46 16bit> ?
Commands:
        q               Quit
        c               Full erase EEPROM
        ?               This usage message
        d               Dump EEPROM, as hex
        D <start> <len> Dump EEPROM, as hex
        e <addr> <val>  Edit EEPROM, write value to address
        f <value>       Erase EEPROM, filling with value
        r <filename>    Dump EEPROM into raw binary file
        w <filename>    Program EEPROM from raw binary file
        t <type>        Set EEPROM device type (as 93C), default 46
        b <bit>         Set bit organization 8 or 16, default 16


ЧАВО:

В: Для чего нужно было придумывать еще один программатор, когда их существует большое количество, и есть, например, вполне свободный и доступный PonyProg?
А: Нужен был чисто консольный программатор для 2х типов микросхем под Linux, под Windows я сделал порт немного позже и то по просьбе друзей. К тому же, PonyProg немного сложнее по исполнению и с GUI, у меня не все системы имеют X-ы, поэтому вариант с GUI мне не подходил, но самое главное, было просто интересно...

B: Если порт принтера такой "нежный", то почему нельзя было использовать серийный COM порт?
А: Дело в том, что все мои серийные порты заняты, а принтерный порт свободный, т.к. печатаю на работе на сетевом принтере, а дома принтер подключен на USB, поэтому было решено, что бы он без дела не простаивал, повесить программатор на него. Если еще учесть схемотехнику, то на параллельном порте программатор получается очень простым и не требует много деталей.

В: А чем собирался СЕРП под Windows?
А: Собирал с помощью Cygwin'а в режиме mingw32, необходимо так же установить пакет win32api в cygwin'е, после, достаточно просто зайти в директорию программы под cygwin'ом и дать команду:
make -f Makefile.win



(c) 2005,2006 Mokrushin I.V. aka McMCC